package com.gxa.p2p.service.impl;

import com.gxa.p2p.mapper.LoanMapper;
import com.gxa.p2p.pojo.Loan;
import com.gxa.p2p.service.LoanUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * TODO
 *Loan 借款对象的接口实现 方法
 * @author 瓶子
 * @Date 2020/8/4
 */
@Service("LoanUserService")
public class LoanUserServiceImpl implements LoanUserService {

    @Resource
    LoanMapper loanMapper;

    /**
     * 方法:查询的所有的借款人信息
     * @return 返回查询到的所有借款对像，信息集合
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<Loan> findByAll(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");

        map.put("page",page);
        List<Loan> byAll = loanMapper.findByAll(map);//调用Mapper的查询所有借款对象信息的方法
        return byAll;//返回借款对象信息集合
    }

    /**
     * 方法：通过名字查询，借款人的信息
     * @param map 借款用户
     * @return 返回查询到的所有借款对像，信息集合
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<Loan> findByName(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");
        map.put("page",page);
        List<Loan> byName = loanMapper.findByName(map);//调用Mapper，查询名字的方法，查询借款信息的方法
        return byName;//返回借款对象信息集合
    }

    /**
     * 方法：通过名字或电话号码，查询借款人的信息
     * @param map 借款人的电话或名字
     * @return 返回查询到的所有借款对像，信息集合
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<Loan> findByNameOrPhoneNum(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");
        map.put("page",page);
        List<Loan> byNameOrPhoneNum = loanMapper.findByNameOrPhoneNum(map);//调用Mapper，查询电话或用户名的借款人的信息
        return byNameOrPhoneNum;//返回借款对象信息集合
    }

    /**
     * 方法：查询借款人的投标状态，查询借款人信息
     * @param map 投标状态
     * @return 返回查询到的所有借款对像，信息集合
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<Loan> findByStatus(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");
        map.put("page",page);
        List<Loan> byStatus = loanMapper.findByStatus(map);//调用Mapper，查询状态的方法，查询借款人的信息
        return byStatus;//返回借款对象信息集合
    }

    @Override
    public Integer countAll(Map<String, Object> map) {
        Integer integer = loanMapper.countAll(map);
        return integer;
    }
}
